<?php namespace Admin\Controller;
class CategoryController extends CommonController{
	private $model;
	public function __auto(){
		$this->model=new \Common\Model\Category;
	}
	public function index(){
			$page=Page::row(12)->make(Db::table('category')->count());
//		p($page);exit;
            View::with('page',$page);
		
		//        把分类表里面的排序字段进行升序排列 拿出里面的多条数据
        $data=Db::table('category')
        ->join('type','type_tid','=','tid')
		->where("type_tid=tid")
//      ->orderBy('cid','ASC')
		->limit(Page::limit())
        ->get();
		
//        如果从数据库拿出来的数据是空的 就让用户先添加一种分类 。跳转到添加分类页面
        if (!$data){
            View::success('请先添加一种分类',U('add'));
        }
//    变成树状结构，层级一目了然
        $data = Data::tree($data,'cname','cid','pid');
//		p($data);exit;
        View::with('data',$data);
//        显示模板
        View::make();
	}
	public function add(){
        if (IS_POST){
            if ($this->model->store()){
                View::success("添加成功",U('index'));
            }
                View::error($this->model->getError());
        }
		$type=new \Common\Model\Type;
		$type=$type->get();
//		p($type);exit;
        View::with('type',$type);
		View::make();
	}
	//    子分类添加
    public function addSon(){
//        添加
        if(IS_POST){
            if($this->model->store()){
                View::success("添加成功",U('index'));
            }
            //提示错误
            View::error($this->model->getError());
        }
//        获得所属分类 点击添加的时候 会获得当前分类的cid
        $cid=Q('get.cid',0,'intval');
//        echo $cid;
//        在数据库里找到cid等于当前分类cid的数据
        $data=$this->model->where("cid={$cid}")->find();
		$type=new \Common\Model\Type;
		$type=$type
		->where("tid={$data['type_tid']}")
		->get();											
//		p($data);exit;
//          p($data);

//        分配过去
		View::with('type',$type);
        View::with('data',$data);
        View::make();
    }
	public function edit(){
		//        修改
        if (IS_POST){
            if ($this->model->edit()){
                View::success('修改成功',U('index'));
            }
            View::error($this->model->getError());
        }

//        获得旧数据
        $cid=Q('get.cid',0,'intval');
//        p($cid);exit;
        $oldData=$this->model->where("cid={$cid}")->find();
//        分配
//p($oldData);
        View::with('oldData',$oldData);
		
		$type=new \Common\Model\Type;
		$type=$type->get();
//		p($type);exit;
        View::with('type',$type);

//        处理"所属分类"，除了自己和自己的子级
        $cateData = Data::tree($this->model->getNoMy($cid),'cname');
        View::with('cateData',$cateData);
		View::make();
		
		
	
	}
	public function del(){
		//         获得当前点击删除分类的cid
        $cid=Q('get.cid','0','intval');
//        1.先判断这个分类下面有没有商品
        $arcModel=new \Common\Model\Goods;
//        查找商品表里字段category_cid=这个分类cid的
        $arcData=$arcModel->where("category_cid={$cid}")->find();
//        如果$arcData是真的 代表这个分类下面有商品
        if ($arcData){
            View::error('请先删除该分类下的商品');
        }
        
//        子分类篡位 用pluck直接获取cid
//        在表里查找要删除的分类的pid
        $pid=$this->model->where("cid={$cid}")->pluck('pid');
//        在表里查找pid等于要删除的分类的cid 意思就是要删除分类的子级 然后把他们的pid改成父级的pid
        $this->model->where("pid={$cid}")->update(array("pid"=>$pid));
        
        $this->model->where("cid={$cid}")->delete();
        View::success('删除成功');
	}
}
